package com.zjsru.plan2024.normal;

import java.util.Arrays;

/**
 *1491. 去掉最低工资和最高工资后的工资平均值
 * @Author: cookLee
 * @Date: 2024-05-04
 */
public class Average {

    /**
     * 主
     * \
     * 输入：salary = [4000,3000,1000,2000]
     * 输出：2500.00000
     * 解释：最低工资和最高工资分别是 1000 和 4000 。
     * 去掉最低工资和最高工资以后的平均工资是 (2000+3000)/2= 2500
     * \
     * 输入：salary = [1000,2000,3000]
     * 输出：2000.00000
     * 解释：最低工资和最高工资分别是 1000 和 3000 。
     * 去掉最低工资和最高工资以后的平均工资是 (2000)/1= 2000
     * \
     * 输入：salary = [6000,5000,4000,3000,2000,1000]
     * 输出：3500.00000
     * \
     * @param args args
     */
    public static void main(String[] args) {
        Average average = new Average();
        int[] salary = new int[]{4000,3000,1000,2000};
        System.out.println(average.average(salary));
    }

    /**
     * 平均值
     *
     * @param salary 工资
     * @return double
     */
    public double average(int[] salary) {
        Arrays.sort(salary);
        int sum = Arrays.stream(salary).sum();
        sum -= salary[0];
        sum -= salary[salary.length - 1];
        return (double) sum / (salary.length - 2);
    }

    /**
     * 平均2
     *
     * @param salary 工资
     * @return double
     */
    public double average2(int[] salary) {
        double sum = 0;
        double maxValue = Integer.MIN_VALUE, minValue = Integer.MAX_VALUE;
        for (int num : salary) {
            sum += num;
            maxValue = Math.max(maxValue, num);
            minValue = Math.min(minValue, num);
        }
        return (sum - maxValue - minValue) / (salary.length - 2);
    }
}
